package com.dothcya.novel9.core.common.resp;

import com.dothcya.novel9.core.common.constant.ErrorCodeEnum;
import lombok.Getter;

import java.util.Objects;

/**
 * 包名称： com.dothcya.novel9.core.common.resp
 * 类名称：RestResp
 * 类描述：Http Rest 响应工具及数据格式封装
 * 创建人：@author Dothcya
 * 创建时间：2025-10-27 19:42
 */
@Getter
public class RestResp<T> {
    //    响应码
    private String code;
    //    响应消息
    private String message;
    //    响应数据
    private T data;

    private RestResp() {
        this.code = ErrorCodeEnum.OK.getCode();
        this.message = ErrorCodeEnum.OK.getMessage();
    }

    private RestResp(ErrorCodeEnum errorCode) {
        this.code = errorCode.getCode();
        this.message = errorCode.getMessage();
    }

    private RestResp(T data) {
        this.data = data;
    }

    public static RestResp<Void> ok() {
        return new RestResp<>();
    }

    public static <T> RestResp<T> ok(T data) {
        return new RestResp<>(data);
    }

    public static RestResp<Void> fail(ErrorCodeEnum errorCode) {
        return new RestResp<>(errorCode);
    }

    public static RestResp<Void> error() {
        return new RestResp<>(ErrorCodeEnum.SYSTEM_ERROR);
    }

    public boolean isOk() {
        return Objects.equals(this.code, ErrorCodeEnum.OK.getCode());
    }
}
